<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class stock_model extends CI_Model {

	public function __construct()
	{
		parent::__construct();
		
	}

	public function obtenerInformeStock($usu_id){
		$this->load->database();
		$this->load->library('item_stock');

		$array = array();

		$sql = 'SELECT DISTINCT `minimo`.`smi_cantidad`, `real`.`sre_cantidad`, `producto`.`pro_codigo`, `producto`.`pro_descripcion`, `producto`.`pro_id`
				    FROM `dw_stock_minimo` `minimo`
				        INNER JOIN `dw_stock_real` `real` ON (`minimo`.`pro_id` = `real`.`pro_id` AND `minimo`.`usu_id` = `real`.`usu_id`)
				        INNER JOIN `dw_producto` `producto` ON (`minimo`.`pro_id` = `producto`.`pro_id`)
				            WHERE `minimo`.`usu_id` = '.$usu_id.' ORDER BY `producto`.`cap_id`, `producto`.`pro_id`  ASC;';

        $query = $this->db->query( $sql );

		foreach ($query->result_array() as $fila) {
			$item = new item_stock();
			$item->setSmi_cantidad($fila['smi_cantidad']);
			$item->setSre_cantidad($fila['sre_cantidad']);
			$item->setPro_codigo($fila['pro_codigo']);
			$item->setPro_descripcion($fila['pro_descripcion']);
			$item->setPro_id($fila['pro_id']);

			$array[] = $item;
		}

		return $array;
	}

	public function agregarCantidadReal($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$sql = 'UPDATE `dw_stock_real`
			SET `sre_cantidad` = `sre_cantidad` + '.$cantidad.'
				where `pro_id` = '.$pro_id.' AND `usu_id` = '.$usu_id.' ;';

		$query = $this->db->query( $sql );
	}

	public function quitarCantidadReal($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$sql = 'UPDATE `dw_stock_real`
			SET `sre_cantidad` = `sre_cantidad` - '.$cantidad.'
				where `pro_id` = '.$pro_id.' AND `usu_id` = '.$usu_id.' ;';

		$query = $this->db->query( $sql );
	}

	public function agregarCantidadMinimo($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$sql = 'UPDATE `dw_stock_minimo`
			SET `smi_cantidad` = `smi_cantidad` + '.$cantidad.'
				where `pro_id` = '.$pro_id.' AND `usu_id` = '.$usu_id.' ;';

		$query = $this->db->query( $sql );
	}

	public function quitarCantidadMinimo($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$sql = 'UPDATE `dw_stock_minimo`
			SET `smi_cantidad` = `smi_cantidad` - '.$cantidad.'
				where `pro_id` = '.$pro_id.' AND `usu_id` = '.$usu_id.' ;';

		$query = $this->db->query( $sql );
	}

	public function validarQuitarStock($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$sql = 'SELECT `sre_cantidad`
					FROM `dw_stock_real`
						WHERE `usu_id` = '.$usu_id.' AND `pro_id` = '.$pro_id.' AND `sre_cantidad`-'.$cantidad.'>=0;';

		$query = $this->db->query( $sql );

		if(count($query->result_array())>0){
			return true;
		}else{
			return false;
		}
	}

	public function validarQuitarStockMinimo($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$sql = 'SELECT `smi_cantidad`
					FROM `dw_stock_minimo`
						WHERE `usu_id` = '.$usu_id.' AND `pro_id` = '.$pro_id.' AND `smi_cantidad`-'.$cantidad.'>=0;';

		$query = $this->db->query( $sql );

		if(count($query->result_array())>0){
			return true;
		}else{
			return false;
		}
	}

	public function todasCategorias(){
		$this->load->database();

		$categorias['cap_id'] = array();
		$categorias['cap_nombre'] = array();

		$sql = 'SELECT `cap_id`, `cap_nombre`
					FROM `dw_categoria_producto`;';

		$query = $this->db->query( $sql );

		foreach ($query->result_array() as $fila) {
			$categorias['cap_id'][] = $fila['cap_id'];
			$categorias['cap_nombre'][$fila['cap_id']] = $fila['cap_nombre'];
		}

		return $categorias;
	}

	public function obtenerProductosCategoria($usu_id, $cap_id){
		$this->load->database();
		$productos['pro_id'] = array();
		$productos['pro_descripcion'] = array();

		$sql = 'SELECT `pro_id`, `pro_descripcion`
					FROM `dw_producto`
						WHERE `cap_id`='.$cap_id.' AND `pro_id` NOT IN (SELECT `pro_id` FROM `dw_stock_minimo` WHERE `usu_id`='.$usu_id.');';

		$query = $this->db->query( $sql );

		foreach ($query->result_array() as $fila) {
			$productos['pro_id'][] = $fila['pro_id'];
			$productos['pro_descripcion'][$fila['pro_id']] = $fila['pro_descripcion'];
		}

		return $productos;
	}

	public function insertarProducto($usu_id, $pro_id, $cantidad){
		$this->load->database();

		$this->db->query( 'BEGIN' );

		$sql = 'INSERT INTO `dw_stock_minimo`(`usu_id`,  `pro_id`,`smi_cantidad`)
					VALUES ('.$usu_id.', '.$pro_id.', '.$cantidad.');';

		$query = $this->db->query( $sql );

		$sql2 = 'INSERT INTO `dw_stock_real`(`usu_id`,  `pro_id`,`sre_cantidad`)
					VALUES ('.$usu_id.', '.$pro_id.', 0);';

		$query2 = $this->db->query( $sql2 );

		if($query && $query2){
			$this->db->query( 'COMMIT' );
		}else{
			$this->db->query( 'ROLLBACK' );
		}

	}
}